はじめてのpythonコードを書いていくぜ
プログラミングにおいて、文字と数字は扱いが違います
文字:単純に表示したい内容
数字:計算などに使いたい数のデータ
例1「『リッキー先生はイケメン』という文字を10回表示したい」という場合は、
「リッキー先生はイケメン」→文字データ
10→数字データ
例2「『4649』という数字を10回表示したい」という場合は、
「4649」→数字でできてるけど、これは表示したい内容なので、文字のデータ
10→数字データ
pythonではいろんな種類のデータがあり、その種類のことをデータ型といいます。
文字列はstring型(ストリング型:str()と略します)
数字はint型(イント型:int()と略します)
と呼びます
文字列を扱うときは、必ず ”” で囲う。これで、「あ、このデータ文字列なのね」とpythonが判断して、これ以降文字関連のpython機能が使えるようになる。
例1: 文字列「リッキーかっこいい」をprintする ””で囲うバージョン(エラーなし)
例2:文字列「リッキーかっこいい」をprintする ””で囲わないバージョン(エラー)
<エラー内容>
エラー文
NameError: name 'リッキーかっこいい' is not defined
書いてある内容
名前エラー:「リッキーかっこいい」なんて名前のものねーよ!
後で説明します
数字は文字列と違って、””で囲う必要がない。
pythonでは、計算するときの記号が算数・数学とは一部違う
| 記号 | コード例 | 結果 | |
|---|---|---|---|
| 足し算 | + | print(5 + 2) | 5 |
| 引き算 | - | print(5 - 2) | 1 |
| 掛け算 | * | print(5 * 2) | 6 |
| 割り算(答えが小数点) | / | print(5 / 2) | 2.5 |
| 割り算(整数の商) | // | print(5 // 2) | 2 |
| 割り算(あまり) | % | print(5 % 2) | 1 |
①リッキー先生の顔面偏差値は、昨日まで70でしたが、今朝鏡を見たら2倍になっていました。今の顔面偏差値はいくつでしょう。
print(70 * 2)
②132753629円のお金を18人で均等に分けたら、余るのはいくら?
print(132753629 % 18)
③10000円持っています。一杯480円のすき屋の牛丼を5杯食べたら、いくら残りますか。
print(10000 - 480 * 5)
文字同士の足し算は文字が合体
name = "リッキーは"
face = "イケメン"
print(name + face)
# 結果:リッキーはイケメン
文字と数字の掛け算は、文字が繰り返し連結される
jijitsu = "イケメンは正義"
print(jijitsu * 10)
# 結果:イケメンは正義イケメンは正義イケメンは正義イケメンは正義イケメンは正義イケメンは正義イケメンは正義イケメンは正義イケメンは正義イケメンは正義
<文字と数字でできないこと>
文字同士の割り算・引き算
文字と数字の足し算・引き算
でも、例えばこんなプログラムで、文字の中に数字を埋め込みたいとき、文字と数字を足し算できないのは、ちょっと不便。
# 問題:15+2を計算して、「人造人間〇〇号」とprintする
# 〇〇には計算の答えがはいる
print("人造人間" + 15 + 2 + "号")
# 文字と数字は足し算できないので、エラーになる
# エラー文 TypeError: can only concatenate str (not "int") to str
# エラー内容:int(数字) と str(文字列) は足し算できねーよ!
str(数字)→数字を文字にして扱うことができる
int(文字)→文字が”123”のような数字にできる文字の場合、数字にして計算などできるようにする
# 問題:15+2を計算して、「人造人間〇〇号」とprintする
# 〇〇には計算の答えがはいる
print("人造人間" + str(15 + 2) + "号")
# "人造人間17号"
実際のプログラミングでは、↑みたいに数字を直接printの中で計算したりは、ほとんどしない。なぜならたとえば
こんなコードを見せられても、いったい何を計算しているのかわからないから。このコードを、こんな感じに書き換えると、「あ、お小遣いもらったのね」って感じがするよね
こんな感じで、扱うデータに名前を付けることができる。算数や数学の=(イコール)とは、記号の意味が違うので注意。名前のことを変数名、変数名がついたデータそのもののことを変数という
算数の= : 右にあるものと左にあるものが同じ
プログラミングの= :右にあるデータに左側の名前を付ける
名前を付けたデータは、print()の中やほかの場所でも、その名前を使って計算したり、表示したりすることができる。そのとき””は必要ない!なぜなら文字だけじゃなくて、数字も変数に入れられるから!
ん?名前って?
のところで「『リッキーかっこいい』なんて名前ねーよ! 」と言われているのは、print()さんが、
あ、こいつ ”” で囲われてない!ってことは文字列じゃないぞ!
あれ?でも『リッキーかっこいい』なんていう変数ねーぞ?
エラーやんけ!!!
となったわけ。
半角アルファベットを使う
(実は日本語の文字も使えちゃうんだけど、バグのもとになるのでダメ!)
なんの数字なのかわかりやすい名前にする
なるべく英単語を使う(わからなければローマ字でもOK ※伝わりづらい英単語よりもローマ字のほうがいいときもある)
長すぎる変数名はわかりづらい
数字で始まる変数名は使えない→pythonが変数名なのか数字なのかわからなくなるから
「○○の○○」という名前を付けるとき、_ (アンダーバー、アンダースコア、アンスコ)をよく使う
ローマ字を使うときは、「しょ(syo, sho)」 「つ」(tu, tsu)」など複数の書き方がある場合もあり、エラーやバグのもとになるので、注意が必要
いろんな変数を使うとき、おんなじルールで変数名を決めると、コードがとても読みやすい
変数名の例
| データの内容 | 変数名の良い例 | 悪い例 |
|---|---|---|
| 身長の高さ | height(英:身長) | |
| shinchou | shincyounotakasa (長い・読みづらい) | |
| takasa (なんの高さだかわからない) | ||
| 場所 | address(住所) | |
| place(場所) | ||
| basyo | ||
| pureisu (ぱっと見英語か日本語かわからない) |
長方形の面積を求めるプログラム
tate = 20
yoko = 15
print("正方形の面積は")
print(tate * yoko)
算数のテストが80点、国語のテストが90点だったとします
①それぞれの点数を変数に入れて、合計の点数を計算し、「合計点:170点」とprintする
② ①のプログラムを変えて、「平均点:85.0点」とprintする。
Copyright © 2020 8ackathon All rights reserved.